package com.example.baseappstore.ui.fragment;

import android.os.Bundle;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.example.baseappstore.databinding.FragmentHomeBinding;
import com.example.baseappstore.domain.base.BaseListResponse;
import com.example.baseappstore.domain.response.RecommendBean;
import com.example.baseappstore.ui.adapter.RecommendAdapter;
import com.example.baseappstore.utils.net.CommonUtils;
import com.example.baseappstore.utils.net.OkHttpUtils;
import com.example.baseappstore.utils.net.OkResult;
import com.google.gson.reflect.TypeToken;

import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;

/**
 * A simple {@link Fragment} subclass.
 * Use the {@link HomeFragment#newInstance} factory method to
 * create an instance of this fragment.
 */
public class HomeFragment extends Fragment {

    public static final HashMap<Integer, String> versionMap = new HashMap<>();
    private FragmentHomeBinding binding;

    // TODO: Rename parameter arguments, choose names that match
    // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
    private static final String ARG_PARAM1 = "param1";
    private static final String ARG_PARAM2 = "param2";

    // TODO: Rename and change types of parameters
    private String mParam1;
    private String mParam2;

    public HomeFragment() {
        // Required empty public constructor
    }

    /**
     * Use this factory method to create a new instance of
     * this fragment using the provided parameters.
     *
     * @param param1 Parameter 1.
     * @param param2 Parameter 2.
     * @return A new instance of fragment HomeFragment.
     */
    // TODO: Rename and change types and number of parameters
    public static HomeFragment newInstance(String param1, String param2) {
        HomeFragment fragment = new HomeFragment();
        Bundle args = new Bundle();
        args.putString(ARG_PARAM1, param1);
        args.putString(ARG_PARAM2, param2);
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (getArguments() != null) {
            mParam1 = getArguments().getString(ARG_PARAM1);
            mParam2 = getArguments().getString(ARG_PARAM2);
        }
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        binding = FragmentHomeBinding.inflate(getLayoutInflater());
        return binding.getRoot();
    }


    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        getData();

    }

    /**
     * 获取数据
     */
    private void getData() {
        OkHttpUtils.doGet("/dev-api/bs-app-store/app/list", new OkResult() {
            @Override
            public void onSuccess(String data) {
                BaseListResponse<RecommendBean> bean = CommonUtils.getGson().
                        fromJson(data, new TypeToken<BaseListResponse<RecommendBean>>() {
                        }.getType());
                List<RecommendBean> data1 = bean.getData().stream().filter(
                        item -> item.getApkName() != null
                ).collect(Collectors.toList());
                for (RecommendBean recommendBean : data1) {
                    versionMap.put(recommendBean.getApkId(), recommendBean.getApkName());
                }

                binding.getRoot().post(() -> {
                    binding.rvRecommend.setAdapter(new RecommendAdapter(data1));
                });

            }
        });

    }


}